Add 'find by name' for tracks/routes.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 24 Oct 2005 16:45:04 +0000 (16:45 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 24 Oct 2005 16:45:04 +0000 (16:45 +0000)
gpsbabel/defs.h
gpsbabel/route.c

index d5271385be8b920dcd51e48d104b0a3d99d3bc96..05b6639669459a3d91ebbfe6f336e12f8998a0a2 100644 (file)
@@ -377,11 +377,14 @@ void route_reverse(const route_head *rte_hd);
 waypoint * route_find_waypt_by_name(route_head *rh, const char *name);
 void track_add_head(route_head *rte);
 void track_del_head(route_head *rte);
+void route_disp(const route_head *rte, waypt_cb);
 void route_disp_all(route_hdr, route_trl, waypt_cb);
 void track_disp_all(route_hdr, route_trl, waypt_cb);
 void route_free (route_head *);
 void route_flush( queue *);
 void route_flush_all(void);
+route_head * route_find_route_by_name(const char *name);
+route_head * route_find_track_by_name(const char *name);
 unsigned int route_waypt_count(void);
 unsigned int route_count(void);
 unsigned int track_count(void);
index 191ec13d5da005feaa750ad9ef08bbaf3627961f..121c1c1e0b6b2b48877dda13be580a7714718883 100644 (file)
@@ -94,6 +94,35 @@ track_del_head(route_head *rte)
        trk_head_ct--;
 }
 
+static 
+route_head *
+common_route_by_name(queue *routes, const char *name)
+{
+       queue *elem, *tmp;
+       route_head *rte;
+
+       QUEUE_FOR_EACH(routes, elem, tmp) {
+               rte = (route_head *) elem;
+               if (0 == strcmp(rte->rte_name, name)) {
+                       return rte;
+               }
+       }
+
+       return NULL;
+}
+
+route_head *
+route_find_route_by_name(const char *name)
+{
+       return common_route_by_name(&my_route_head, name);
+}
+
+route_head *
+route_find_track_by_name(const char *name)
+{
+       return common_route_by_name(&my_track_head, name);
+}
+
 void
 route_add_wpt(route_head *rte, waypoint *wpt)
 {
@@ -216,6 +245,9 @@ route_flush_all()
 {
        route_flush(&my_route_head);
        route_flush(&my_track_head);
+       rte_head_ct = 0;
+       trk_head_ct = 0;
+       rte_waypts = 0;
 }
 
 void